#ifndef _COLA_H_
#define _COLA_H_

#include <string>
#include <string.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <vector>

#define FLAG_MAS_DATOS 1
#define FLAG_FIN_DATOS 0
#define MENSAJE_TAMANIO_MAX 512

typedef struct {
    long id;
    long cero;
    bool mas_datos;
    unsigned tamanio;
    char buffer[MENSAJE_TAMANIO_MAX];
}mensaje_t;


class Cola{

    int idCola;

    public:
    Cola(const char* path, int id);

    bool enviar(long idMensaje, const std::vector<char> &mensaje);

    bool enviar(long idMensaje, const char* mensaje, unsigned tamanio);

    bool recibir(long idMensaje, std::vector<char> &buffer, long &id_recibida);

    bool recibir(long idMensaje, std::vector<char> &buffer);

    static void destruir(const char* path, int id);

    ~Cola();
};

#endif /* _COLA_H_ */
